home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / maximus / mxms_161.zip / MAXHEAD.ZIP / PROG.H < prev    next >
C/C++ Source or Header  |  1990-11-01  |  8KB  |  241 lines

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *  MAXIMUS-CBCS Source Code, Version 1.02                                 *
  4.  *  Copyright 1989, 1990 by Scott J. Dudley.  All rights reserved.         *
  5.  *                                                                         *
  6.  *  General include file.  Lots of machine-dependant stuff here.           *
  7.  *                                                                         *
  8.  *  For complete details of the licensing restrictions, please refer to    *
  9.  *  the licence agreement, which is published in its entirety in MAX.C     *
  10.  *  and LICENCE.MAX.                                                       *
  11.  *                                                                         *
  12.  *  USE OF THIS FILE IS SUBJECT TO THE RESTRICTIONS CONTAINED IN THE       *
  13.  *  MAXIMUS-CBCS LICENSING AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF THIS *
  14.  *  AGREEMENT IN ANY OF THE  AFOREMENTIONED FILES, OR IF YOU DO NOT HAVE   *
  15.  *  THESE FILES, YOU SHOULD IMMEDIATELY CONTACT THE AUTHOR AT ONE OF THE   *
  16.  *  ADDRESSES LISTED BELOW.  IN NO EVENT SHOULD YOU PROCEED TO USE THIS    *
  17.  *  FILE WITHOUT HAVING ACCEPTED THE TERMS OF THE MAXIMUS-CBCS LICENSING   *
  18.  *  AGREEMENT, OR SUCH OTHER AGREEMENT AS YOU ARE ABLE TO REACH WITH THE   *
  19.  *  AUTHOR.                                                                *
  20.  *                                                                         *
  21.  *  You can contact the author at one of the address listed below:         *
  22.  *                                                                         *
  23.  *  Scott Dudley           FidoNet  1:249/106                              *
  24.  *  777 Downing St.        IMEXnet  89:483/202                             *
  25.  *  Kingston, Ont.         Internet f106.n249.z1.fidonet.org               *
  26.  *  Canada - K7M 5N3       BBS      (613) 389-8315 - HST/14.4K, 24hrs      *
  27.  *                                                                         *
  28.  ***************************************************************************/
  29.  
  30. #ifndef __PROG_H_DEFINED
  31. #define __PROG_H_DEFINED
  32.  
  33. #include "compiler.h"
  34.  
  35. #include <share.h>
  36. #include <sys/types.h>
  37. #include <sys/stat.h>
  38.  
  39. #if !defined(__DOS_DEF_) && defined(__TURBOC__)
  40. void __emit__();
  41. void __int__(int interruptnum);
  42. #define geninterrupt(i) __int__(i)
  43. #endif
  44.  
  45. typedef long timer_t;
  46.  
  47. #define REGISTER
  48.  
  49. #ifndef TRUE
  50. #define FALSE 0
  51. #define TRUE 1
  52. #endif
  53.  
  54. #ifdef PATHLEN
  55. #undef PATHLEN
  56. #endif
  57.  
  58. #define _PRIVS_NUM         13   /* Maximum priv levels for Maximus         */
  59. #define CHAR_BITS           8   /* Number of bits in a `char' variable     */
  60. #define PATHLEN           120   /* Max. length of a path                   */
  61. #define MAX_DRIVES         26   /* Maximum number of drives on system;     *
  62.                                  * for MS-DOS, A through Z.  Used by       *
  63.                                  * Save_Dir()...                           */
  64.  
  65.  
  66. #ifdef __TURBOC__
  67.   /* This won't be emitted if we compile with -O! */
  68.   #define EmbedCopyright() goto __label_start;  __label_emit: \
  69.   __emit__('\n','\n','\n','\n','C','o','p','y','r','i','g','h','t',' ','(','c',')',' ', \
  70.   '1','9','9','0',' ','b','y',' ','S','c','o','t','t',' ','J','.',' ', \
  71.   'D','u','d','l','e','y',',',' ','A','l','l',' ','R','i','g','h','t','s',' ', \
  72.   'R','e','s','e','r','v','e','d','.','\n','\n','\n','\n'); \
  73.   __label_start:
  74. #else
  75.   #define EmbedCopyright()
  76. #endif
  77.  
  78.   #if (defined(__TURBOC__) && defined(__FARDATA__))
  79.   #include "alc.h"
  80.   #define malloc(n)     farmalloc(n)
  81.   #define calloc(n,u)   farcalloc(n,u)
  82.   #define free(p)       farfree(p)
  83.   #define realloc(p,n)  farrealloc(p,n)
  84.   #define coreleft()    farcoreleft()
  85.   #endif
  86.  
  87. #define Hello(prog,desc,version,year) EmbedCopyright(); printf("\n" prog "  " desc ", Version %s.\nCopyright 1990 by Scott J. Dudley of 1:249/106.  All rights reserved.\n\n",version)
  88. #define trace(d,t)            printf(#d"=<%"#t">\n",d);
  89. #define carrier_flag          (prm.carrier_mask)
  90. #define BitOff(a,x)           (void)((a)[(x)/CHAR_BITS] &= ~(1 << ((x) % CHAR_BITS)))
  91. #define BitOn(a,x)            (void)((a)[(x)/CHAR_BITS] |= (1 << ((x) % CHAR_BITS)))
  92. #define IsBit(a,x)            ((a)[(x)/CHAR_BITS] & (1 << ((x) % CHAR_BITS)))
  93.  
  94. #define lputs(handle,string)  write(handle,string,strlen(string))
  95.  
  96. #define dim(a)                (sizeof(a)/sizeof(a[0]))
  97. #define eqstr(str1,str2)      (! strcmp(str1,str2))
  98. #define eqstri(str1,str2)     (! stricmp(str1,str2))
  99. #define isnl(string)          (*(string)=='\0')
  100. #define mknl(string)          (*(string)='\0')
  101. #define smalloc(p,size)       ((p)==NULL?((((p)=malloc(size))==NULL)?(NoMem(),0):-1):0)
  102. #define sfree(p)              ((p)!=NULL?free(p),(p)=NULL:0)
  103. #define divby(num,div)        ((num % div)==0)
  104. #define striplast(s,c)        (s[strlen(s)-1]=(*s && s[strlen(s)-1]==c) ? '\0' : s[strlen(s)-1])
  105. #define f_tolwr(c)            (_to_lwr[c])
  106. #define f_toupr(c)            (_to_upr[c])
  107.  
  108. #ifndef updcrc
  109. #define updcrc(cp, crc)       (crctab[((crc >> 8) & 255) ^ cp] ^ (crc << 8))
  110. #endif
  111.  
  112.  
  113. #ifndef max
  114. #define max(a,b)              (((a) > (b)) ? (a) : (b))
  115. #define min(a,b)              (((a) < (b)) ? (a) : (b))
  116. #endif
  117.  
  118. struct _stamp   /* DOS-style datestamp */
  119. {
  120.   struct
  121.   {
  122.     unsigned int da : 5;
  123.     unsigned int mo : 4;
  124.     unsigned int yr : 7;
  125.   } date;
  126.  
  127.   struct
  128.   {
  129.     unsigned int ss : 5;
  130.     unsigned int mm : 6;
  131.     unsigned int hh : 5;
  132.   } time;
  133. };
  134.  
  135.  
  136. union stamp_combo   /* Union so we can access stamp as "int" or by individual components */
  137. {
  138.   struct _stamp msg_st;
  139.  
  140.   struct
  141.   {
  142.     unsigned int date;
  143.     unsigned int time;
  144.   } dos_st;
  145.  
  146.   unsigned long ldate;
  147. };
  148.  
  149. struct __priv
  150. {
  151.   char *name;
  152.   int priv;
  153. };
  154.  
  155.  
  156. extern char months[][10],
  157.             weekday[][10];
  158.  
  159. extern char months_ab[][4],
  160.             weekday_ab[][4];
  161.  
  162. extern struct __priv _privs[];
  163.  
  164.  
  165. /* MS docs use both SH_DENYNONE and SH_DENYNO */
  166.  
  167. #if !defined(SH_DENYNONE) && defined(SH_DENYNO)
  168.   #define SH_DENYNONE SH_DENYNO
  169. #endif
  170.  
  171. #define shopen(path,access)       sopen(path,access,SH_DENYNONE,S_IREAD | S_IWRITE)
  172. #define cshopen(path,access,mode) sopen(path,access,SH_DENYNONE,mode)
  173.  
  174.  
  175. #ifndef __TURBOC__
  176.  
  177.   int fossil_wherex(void);
  178.   int fossil_wherey(void);
  179.   void pascal fossil_getxy(char *row, char *col);
  180.  
  181.   #define textattr(attr)
  182.   #define getdisk()                  get_disk()
  183.   #define setdisk(drive)             set_disk(drive)
  184.   #define wherex()                   fossil_wherex()
  185.   #define wherey()                   fossil_wherey()
  186.   #define gotoxy(x,y)                fossil_gotoxy((char)x,(char)y)
  187.   #define movmem(source,dest,count)  memmove(dest, source, count)
  188.   #define getvect(int)            _dos_getvect(int)
  189.   #define setvect(int, func)      _dos_setvect(int, func)
  190.   #define inportb(port)           inp(port)
  191.   #define outportb(port, byte)    outp(port, byte)
  192.  
  193. #endif
  194.  
  195.  
  196. #if (defined(MSDOS) || defined(__TURBOC__)) && !defined(OS_2)
  197.  
  198.     /* these asm functions are declared far so they are usable in
  199.      * any memory model.
  200.      */
  201. int pascal far DdosInstalled(void);
  202. #define vbuf_flush() {if (displaymode==VIDEO_ibm) VidSync();}
  203.  
  204. #else
  205. #define DdosInstalled()  FALSE
  206. void vbuf_flush(void);
  207. #endif
  208.  
  209. #endif
  210.  
  211. #ifdef OS_2
  212.   void vbuf_flush(void);
  213.   void SnSetPipeName(char *pipename);
  214.   void SnWrite(char *str);
  215.  
  216.   #define  Start_Shadow()
  217.   #define  End_Shadow()
  218. #else
  219.   void pascal Start_Shadow(void);
  220.   void pascal End_Shadow(void);
  221. #endif
  222.  
  223.  
  224.  
  225. /*
  226.  >         typedef byte unsigned char;
  227.  >         extern struct {
  228.  >              byte winleft, wintop, winright, winbottom;
  229.  >              byte attribute, normattr;
  230.  >              byte currmode;
  231.  >              byte screenheight, screenwidth;
  232.  >              byte graphmode, snow;
  233.  >              void far *ram;
  234.  >         } _video;
  235.  >         main() {
  236.  >             _video.winbottom = (_video.screenheight = 50) - 1;
  237.  >             ...
  238.  >         }
  239.  
  240. */
  241.